ZabbixのDiscovery機能を使ってAuto ScalingするEC2インスタンスをZabbixに自動で登録や削除してみた
Auto ScalingするEC2インスタンスをZabbixに自動で登録や削除したい
こんにちは、のんピ(@non____97)です。
皆さんはAuto ScalingするEC2インスタンスをZabbixに自動で登録や削除したいなと思ったことはありますか? 私はあまりありません。
ZabbixではDiscovery機能を使って、条件に当てはまる機器をZabbixにホストとして自動で登録することができます。
なんとなくですがZabbixを触らなければならない予感がするので、久しぶりに触ってみようと思います。
私が業務で触っていたZabbixは3系までだったので、思い出しながら設定します。
いきなりまとめ
- ZabbixのDiscovery機能を使えばAuto ScalingするEC2インスタンスをZabbixに自動で登録や削除ができる
- Auto Scalingで削除されたEC2インスタンスがホストに登録されたままにならないように、削除設定もしよう
- あまりにも削除するまでの閾値が低いと、一時的なダウンであっても削除されるかもしれないので注意しよう
検証環境
検証環境は以下の通りです。
検証環境はAWS CDKでデプロイしました。
Zabbix ServerのインストールやDBの初期設定などもユーザーデータで行なっています。Web UIで設定する箇所以外は一撃でZabbix Serverを構築することができます。
使用したコードは以下の通りです。
Auto Scaling groupのユーザーデータの詳細は以下記事をご覧ください。こちらの記事で紹介している処理に加えて、Zabbix Agentをインストールし、Zabbix ServerのIPアドレスを設定ファイルに追記しているだけです。
デプロイ後はブラウザからZabbix Web UIにて設定を行います。
設定の詳細な手順は以下記事の「WebブラウザからのZabbixのセットアップ
」をご覧ください。
設定の概要は以下の通りです。
設定に完了するとCongratulations! You have successfully installed Zabbix frontend.
と表示されます。
デフォルトのユーザーAdmin
を使用してZabbixにログインします。
Global viewが表示されることを確認します。
なお、/etc/zabbix/zabbix_server.conf
にてDBPassword
を入力しなかった場合は、Zabbix server is not running: the information displayed may not be current
とメッセージが表示され、各種監視設定を行うことができません。
Zabbixへの自動登録
Discoveryの設定
Discoveryの設定を行います。
まず、Discovery ruleを作成します。
こちらはホストを検出するための定義です。今回は1分間隔で10.10.10.0/26
内のZabbix Agentからの応答があるホストを検出するようにします。
検出したホストはsystem.uname
の値をホスト名として追加します。system.uname
はZabbix Agentから取得できるアイテムキーです。単純にOSホスト名を取得したい場合はsystem.hostname
を指定しましょう。
アイテムキーの一覧は以下Zabbix公式ドキュメントをご覧ください。
Discovery ruleのその他のパラメーターの詳細は以下Zabbix公式ドキュメントをご覧ください。
Discovery ruleの作成が完了したら、次はDiscovery actionの設定をします。
こちらはDiscovery ruleで条件に当てはまった場合にどのような処理を行うかを定義するものです。
デフォルトでAuto discovery. Linux servers
というDiscovery actionがありました。こちらを再利用しましょう。
作成したDiscovery ruleにおいて検出されたホストを、ホストとして追加するように設定変更します。
ホストグループや関連付けるテンプレートはZabbixが提供しているものを利用します。
Zabbixに登録されることの確認
しばらく待つとLinux host-01.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64
などホストが登録されました。
こちらのホスト名はDiscovery ruleで指定したsystem.uname
の値です。要するにuname -a
の値です。
追加されたホストを確認します。IPアドレスやDNS名が登録されていますね。
ちなみに、Problems
の黄色い1
となっているものは、The host uptime is less than 10 minutes.
とシステムが起動してから10分未満であるためです。放置しておくと消えます。
最新データも確認しておきましょう。一部情報は取得できていないですが概ね取得できていますね。
グラフも確認しておきます。GDライブラリみのある円グラフや折れ線グラフなどが表示されています。
また、Zabbix Serverのログを確認すると、ホストが追加された時のログが記録されていました。
1512:20231016:054431.140 Zabbix agent item "net.if.out["ens5"]" on host "ip-10-10-10-51.ec2.internal" failed: first network error, wait for 15 seconds 1513:20231016:054431.141 Zabbix agent item "system.swap.size[,pfree]" on host "Linux web-02.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64" failed: first network error, wait for 15 seconds 1515:20231016:054431.142 Zabbix agent item "system.localtime" on host "Linux web-06.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64" failed: first network error, wait for 15 seconds 1513:20231016:054444.150 Zabbix agent item "system.swap.size[,pfree]" on host "Linux web-05.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64" failed: first network error, wait for 15 seconds 1530:20231016:054449.980 Zabbix agent item "vm.memory.size[available]" on host "ip-10-10-10-21.ec2.internal" failed: another network error, wait for 15 seconds 1530:20231016:054453.980 Zabbix agent item "system.cpu.num" on host "ip-10-10-10-51.ec2.internal" failed: another network error, wait for 15 seconds 1530:20231016:054457.980 Zabbix agent item "agent.ping" on host "Linux web-06.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep26 20_06_16 UTC 2023 x86_64" failed: another network error, wait for 15 seconds 1530:20231016:054501.980 Zabbix agent item "vm.memory.size[total]" on host "Linux web-02.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64" failed: another network error, wait for 15 seconds 1530:20231016:054509.981 Zabbix agent item "agent.ping" on host "Linux web-05.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep26 20_06_16 UTC 2023 x86_64" failed: another network error, wait for 15 seconds 1530:20231016:054513.982 Zabbix agent item "system.cpu.num" on host "ip-10-10-10-21.ec2.internal" failed: another network error, wait for 15 seconds 1530:20231016:054517.982 temporarily disabling Zabbix agent checks on host "ip-10-10-10-51.ec2.internal": interface unavailable 1530:20231016:054521.983 temporarily disabling Zabbix agent checks on host "Linux web-06.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64": interface unavailable 1530:20231016:054525.983 temporarily disabling Zabbix agent checks on host "Linux web-02.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64": interface unavailable 1530:20231016:054529.984 temporarily disabling Zabbix agent checks on host "Linux web-05.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64": interface unavailable 1530:20231016:054533.089 temporarily disabling Zabbix agent checks on host "ip-10-10-10-21.ec2.internal": interface unavailable 1515:20231016:055216.737 Zabbix agent item "system.localtime" on host "Linux web-01.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64" failed: first network error, wait for 15 seconds 1530:20231016:055234.593 Zabbix agent item "system.sw.os" on host "Linux web-01.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64" failed: another network error, wait for 15 seconds 1529:20231016:055245.761 Zabbix agent item "system.cpu.load[all,avg1]" on host "Linux web-02.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64" failed: first network error, wait for 15 seconds 1530:20231016:055252.705 Zabbix agent item "agent.version" on host "Linux web-01.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64" failed: another network error, wait for 15 seconds 1530:20231016:055304.709 Zabbix agent item "system.cpu.intr" on host "Linux web-02.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64" failed: another network error, wait for 15 seconds 1530:20231016:055310.817 temporarily disabling Zabbix agent checks on host "Linux web-01.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64": interface unavailable 1530:20231016:055323.820 Zabbix agent item "system.cpu.util[,interrupt]" on host "Linux web-02.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64" failed: another network error, wait for 15 seconds 1530:20231016:055342.833 temporarily disabling Zabbix agent checks on host "Linux web-02.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64": interface unavailable 1515:20231016:060135.311 enabling Zabbix agent checks on host "Linux host-02.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64": interface became available 1500:20231016:060223.949 executing housekeeper 1500:20231016:060225.855 housekeeper [deleted 60 hist/trends, 5466 items/triggers, 0 events, 0 problems, 0 sessions, 0 alarms, 0 audit, 0 autoreg_host, 0 records in 1.889627 sec, idle for 1 hour(s)] 1507:20231016:060244.498 item "Linux host-02.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64:vfs.file.contents["/sys/class/net/ens5/speed"]" became not supported: Cannot read from file: read /sys/class/net/ens5/speed: invalid argument 1504:20231016:060245.498 item "Linux host-02.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64:vfs.dev.read.await[nvme0n1]" became not supported: Cannot evaluate function: not enough data at "last(//vfs.dev.read.time.rate[nvme0n1])/(last(//vfs.dev.read.rate[nvme0n1])+(last(//vfs.dev.read.rate[nvme0n1])=0)))*1000*(last(//vfs.dev.read.rate[nvme0n1]) > 0)". 1505:20231016:060246.500 item "Linux host-02.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64:vfs.dev.read.await[xvda]" became not supported: Cannot evaluate function: not enough data at "last(//vfs.dev.read.time.rate[xvda])/(last(//vfs.dev.read.rate[xvda])+(last(//vfs.dev.read.rate[xvda])=0)))*1000*(last(//vfs.dev.read.rate[xvda]) > 0)". 1506:20231016:060247.503 item "Linux host-02.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64:vfs.dev.write.await[nvme0n1]" became not supported: Cannot evaluate function: not enough data at "last(//vfs.dev.write.time.rate[nvme0n1])/(last(//vfs.dev.write.rate[nvme0n1])+(last(//vfs.dev.write.rate[nvme0n1])=0)))*1000*(last(//vfs.dev.write.rate[nvme0n1]) > 0)". 1504:20231016:060248.506 item "Linux host-02.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64:vfs.dev.write.await[xvda]" became not supported: Cannot evaluate function: not enough data at "last(//vfs.dev.write.time.rate[xvda])/(last(//vfs.dev.write.rate[xvda])+(last(//vfs.dev.write.rate[xvda])=0)))*1000*(last(//vfs.dev.write.rate[xvda]) > 0)". 1506:20231016:060256.513 item "Linux host-02.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64:vfs.file.contents[/sys/block/xvda/stat]" became not supported: Cannot obtain file /sys/block/xvda/stat information: stat /sys/block/xvda/stat: no such file or directory 1506:20231016:060256.513 item "Linux host-02.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64:vfs.dev.write.rate[xvda]" became not supported: Cannot obtain file /sys/block/xvda/stat information: stat /sys/block/xvda/stat: no such file or directory 1506:20231016:060256.513 item "Linux host-02.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64:vfs.dev.write.time.rate[xvda]" became not supported: Cannot obtain file /sys/block/xvda/stat information: stat /sys/block/xvda/stat: no such file or directory 1506:20231016:060256.513 item "Linux host-02.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64:vfs.dev.queue_size[xvda]" became not supported: Cannot obtain file /sys/block/xvda/stat information: stat /sys/block/xvda/stat: no such file or directory 1506:20231016:060256.513 item "Linux host-02.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64:vfs.dev.read.rate[xvda]" became not supported: Cannot obtain file /sys/block/xvda/stat information: stat /sys/block/xvda/stat: no such file or directory 1506:20231016:060256.513 item "Linux host-02.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64:vfs.dev.read.time.rate[xvda]" became not supported: Cannot obtain file /sys/block/xvda/stat information: stat /sys/block/xvda/stat: no such file or directory 1506:20231016:060256.513 item "Linux host-02.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64:vfs.dev.util[xvda]" became not supported: Cannot obtain file /sys/block/xvda/stat information: stat /sys/block/xvda/stat: no such file or directory 1512:20231016:060326.336 enabling Zabbix agent checks on host "Linux host-01.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64": interface became available 1504:20231016:060346.555 error reason for "Linux host-02.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023x86_64:vfs.dev.read.await[xvda]" changed: Cannot evaluate function: item "/Linux host-02.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64/vfs.dev.read.time.rate[xvda]" is not supported at "last(//vfs.dev.read.time.rate[xvda])/(last(//vfs.dev.read.rate[xvda])+(last(//vfs.dev.read.rate[xvda])=0)))*1000*(last(//vfs.dev.read.rate[xvda]) > 0)". 1506:20231016:060348.556 error reason for "Linux host-02.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023x86_64:vfs.dev.write.await[xvda]" changed: Cannot evaluate function: item "/Linux host-02.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64/vfs.dev.write.time.rate[xvda]" is not supported at "last(//vfs.dev.write.time.rate[xvda])/(last(//vfs.dev.write.rate[xvda])+(last(//vfs.dev.write.rate[xvda])=0)))*1000*(last(//vfs.dev.write.rate[xvda]) > 0)". 1507:20231016:060427.588 item "Linux host-01.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64:vfs.file.contents["/sys/class/net/ens5/speed"]" became not supported: Cannot read from file: read /sys/class/net/ens5/speed: invalid argument 1504:20231016:060428.589 item "Linux host-01.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64:vfs.dev.read.await[nvme0n1]" became not supported: Cannot evaluate function: not enough data at "last(//vfs.dev.read.time.rate[nvme0n1])/(last(//vfs.dev.read.rate[nvme0n1])+(last(//vfs.dev.read.rate[nvme0n1])=0)))*1000*(last(//vfs.dev.read.rate[nvme0n1]) > 0)". 1505:20231016:060429.590 item "Linux host-01.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64:vfs.dev.read.await[xvda]" became not supported: Cannot evaluate function: not enough data at "last(//vfs.dev.read.time.rate[xvda])/(last(//vfs.dev.read.rate[xvda])+(last(//vfs.dev.read.rate[xvda])=0)))*1000*(last(//vfs.dev.read.rate[xvda]) > 0)". 1507:20231016:060430.594 item "Linux host-01.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64:vfs.dev.write.await[nvme0n1]" became not supported: Cannot evaluate function: not enough data at "last(//vfs.dev.write.time.rate[nvme0n1])/(last(//vfs.dev.write.rate[nvme0n1])+(last(//vfs.dev.write.rate[nvme0n1])=0)))*1000*(last(//vfs.dev.write.rate[nvme0n1]) > 0)". 1506:20231016:060431.596 item "Linux host-01.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64:vfs.dev.write.await[xvda]" became not supported: Cannot evaluate function: not enough data at "last(//vfs.dev.write.time.rate[xvda])/(last(//vfs.dev.write.rate[xvda])+(last(//vfs.dev.write.rate[xvda])=0)))*1000*(last(//vfs.dev.write.rate[xvda]) > 0)". 1504:20231016:060439.604 item "Linux host-01.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64:vfs.file.contents[/sys/block/xvda/stat]" became not supported: Cannot obtain file /sys/block/xvda/stat information: stat /sys/block/xvda/stat: no such file or directory 1504:20231016:060439.604 item "Linux host-01.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64:vfs.dev.write.rate[xvda]" became not supported: Cannot obtain file /sys/block/xvda/stat information: stat /sys/block/xvda/stat: no such file or directory 1504:20231016:060439.604 item "Linux host-01.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64:vfs.dev.write.time.rate[xvda]" became not supported: Cannot obtain file /sys/block/xvda/stat information: stat /sys/block/xvda/stat: no such file or directory 1504:20231016:060439.604 item "Linux host-01.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64:vfs.dev.queue_size[xvda]" became not supported: Cannot obtain file /sys/block/xvda/stat information: stat /sys/block/xvda/stat: no such file or directory 1504:20231016:060439.604 item "Linux host-01.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64:vfs.dev.read.rate[xvda]" became not supported: Cannot obtain file /sys/block/xvda/stat information: stat /sys/block/xvda/stat: no such file or directory 1504:20231016:060439.604 item "Linux host-01.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64:vfs.dev.read.time.rate[xvda]" became not supported: Cannot obtain file /sys/block/xvda/stat information: stat /sys/block/xvda/stat: no such file or directory 1504:20231016:060439.604 item "Linux host-01.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64:vfs.dev.util[xvda]" became not supported: Cannot obtain file /sys/block/xvda/stat information: stat /sys/block/xvda/stat: no such file or directory 1507:20231016:060445.612 item "Linux host-02.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64:vfs.dev.read.await[nvme0n1]" became supported 1505:20231016:060447.614 item "Linux host-02.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64:vfs.dev.write.await[nvme0n1]" became supported 1504:20231016:060529.657 error reason for "Linux host-01.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023x86_64:vfs.dev.read.await[xvda]" changed: Cannot evaluate function: item "/Linux host-01.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64/vfs.dev.read.time.rate[xvda]" is not supported at "last(//vfs.dev.read.time.rate[xvda])/(last(//vfs.dev.read.rate[xvda])+(last(//vfs.dev.read.rate[xvda])=0)))*1000*(last(//vfs.dev.read.rate[xvda]) > 0)". 1505:20231016:060531.660 error reason for "Linux host-01.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023x86_64:vfs.dev.write.await[xvda]" changed: Cannot evaluate function: item "/Linux host-01.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64/vfs.dev.write.time.rate[xvda]" is not supported at "last(//vfs.dev.write.time.rate[xvda])/(last(//vfs.dev.write.rate[xvda])+(last(//vfs.dev.write.rate[xvda])=0)))*1000*(last(//vfs.dev.write.rate[xvda]) > 0)". 1507:20231016:060628.708 item "Linux host-01.asg.corp.non-97.net 6.1.55-75.123.amzn2023.x86_64 _1 SMP PREEMPT_DYNAMIC Tue Sep 26 20_06_16 UTC 2023 x86_64:vfs.dev.read.await[nvme0n1]" became supported
ちなみに、OSホスト名を変更してZabbix Agentを再起動しても別ホストが追加されるということはありませんでした。
Zabbixからホストを自動削除
ホストの自動削除がない場合の動き
次にホストの自動削除を行います。
ホストの自動削除が行われなければ、Auto Scalingにより削除されたEC2インスタンスもホストとして残ってしまいます。
ホストが長期間ダウンしている場合に、ホストを自動で削除したいところです。
また、古いホストが残り続けるという単純に煩わしいだけでなく、ホスト名が重複してしまった場合に上手く監視ができないという弊害もあります。
実際に試してみましょう。
まず、Auto Scaling groupに属するEC2インスタンスを停止します。
すると、Zabbix Agentとの疎通が取れなくなったとNot available
となりました。
しばらくすると、停止したEC2インスタンスが削除され、新たにEC2インスタンスが追加されていました。
しかし、Interfaceが2つあり、新しく作成されたEC2インスタンスのIPアドレスのInterfaceはUnknown
のままです。
削除されたEC2インスタンスのInterfaceの情報が残っていますね。しかも、そのInterfaceを削除することはできないようです。
また、スクリーンショットを取得するの忘れてしまったのですが、アイテムのデータ更新もされていませんでした。
Discoveryの設定
自動削除の設定をします。
Discovery actionにて、Discovery ruleで検出したホストで60秒以上ダウンしているホストを削除する定義をします。
今回は60秒にしていますが、あまりにも削除するまでの閾値が低いと、一時的なダウンであっても削除されるかもしれないので注意しましょう。
Zabbixに登録されることの確認
再度確認します。
Auto Scaling groupのEC2インスタンスを停止します。
すると、Zabbixからホストが削除されました。
また、少し待つとホストが追加されました。しかし、変わらずInterfaceは2つありました。
しばらくすると、一度ホストが削除されて、再追加されました。
Interfaceも1つのみ登録されています。
データも更新されていますね。
同じホスト名だと直近2つのInterfaceの情報を保持するのでしょうか。
ZabbixでAuto ScalingするEC2インスタンスを監視する場合はDiscoveryを使おう
ZabbixのDiscovery機能を使ってAuto ScalingするEC2インスタンスをZabbixに自動で登録や削除してみました。
ZabbixでAuto ScalingするEC2インスタンスを監視する場合はDiscoveryを使いましょう。Zabbix AgentでOS内を監視する要件がない場合は、AWS by HTTPを使うのも良いと思います。
この記事が誰かの助けになれば幸いです。
以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!